var t = require('../../utils/liveapi')
var ad = require('../../utils/ad')
let interstitialAd = null

const app = getApp();
var userInfo = app.globalData.userInfo;
var baseUrl = app.globalData.baseUrl;

Page({
  data: {
    weixin: '',
    analysisUrl: '',
    videoUrl: '',
    hideResult: !0,
    desc: '',
    customAdUnitId: ad.adConfig.customAdUnitId,
    showBackupDownload: false,
    downloading: false,
    downloadProgress: 0,
    showProgressModal: false,
    downloadTask: null,
    // 新增直播相关数据
    liveData: [],
    showVideoPreview: false,
    currentVideoUrl: '',
    isDownloadingVideo: true,
    showBatchModal: false,
    batchProgress: 0,
    currentBatchIndex: 0,
    totalBatchCount: 0,
    batchDownloads: [],
    // 视频广告相关
    videoAdError: false,
    showTutorialModal: false,

    openId:"ogFvm6xEQPEFZSsHdUCoiWZCvu8g",
    batchId:"26d2bcacb8244ddf8dcc616f71051d69",
    videoList: [],
  },
 
  kefu: function () {
    wx.setClipboardData({
      data: this.data.weixin,
      success: function () {
        wx.showToast({
          title: '已复制',
          icon: 'none'
        })
      }
    })
  },
  analysisTap: function (o) {
    var a = this
    a.getURLFromString(a.data.analysisUrl) ?
      a.getURLFromString(a.data.analysisUrl) ?
      (wx.showLoading({
          title: '正在去水印',
          mask: true // 添加mask防止用户重复点击
        }),
        wx.getNetworkType({
          success: res => {
            // 使用箭头函数保持this指向
            if (res.networkType === 'none') {
              wx.showToast({
                title: '请检查网络连接',
                icon: 'none',
                duration: 2000
              })
              return
            }
            // 继续执行原有的analysisTap逻辑
            t.xhsDealVideo(
              this.getURLFromString(this.data.analysisUrl),
              function (t) {
                wx.hideLoading()
                console.log('API返回数据:', t)
                if (t && t.data) {
                  if (t.data.code == 200) {
                    // 处理新的直播API数据结构
                    a.setData({
                      desc: t.data.data.title || '',
                      liveData: t.data.data.live || [],
                      hideResult: !1
                    })

                    // 检查是否显示备用下载按钮
                    a.checkBackupDownloadAvailable()
                  } else {
                    console.log('API错误:', t.data)
                    let errorMsg = '解析失败'
                    if (t.data.message) {
                      errorMsg = t.data.message
                    } else if (t.data.msg) {
                      errorMsg = t.data.msg
                    } else if (t.data.data && t.data.data.massage) {
                      errorMsg = t.data.data.massage
                    }

                    wx.showToast({
                      title: errorMsg,
                      icon: 'none',
                      duration: 2000
                    })
                  }
                } else {
                  wx.showToast({
                    title: '服务器返回数据异常',
                    icon: 'none',
                    duration: 2000
                  })
                }
              },
              function (error) {
                console.error('API调用失败:', error)
                wx.hideLoading()
                wx.showModal({
                  title: '温馨提示',
                  content: '视频解析失败，可能的原因：\n1. 视频正在审核中\n2. 视频设置了仅限好友观看\n3. 不支持该平台链接\n4. 服务器暂时无法访问',
                  confirmText: '我知道了',
                  showCancel: !1,
                  confirmColor: '#d4237a'
                })
              }
            )
          }
        })) :
      wx.showToast({
        icon: 'none',
        title: '链接格式错误，请检查'
      }) :
      wx.showToast({
        icon: 'none',
        title: '请先粘贴视频链接'
      })
  },
  inputChange: function (t) {
    this.setData({
      analysisUrl: t.detail.value
    })
  },
  ym: function (t) {
    wx.showToast({
      icon: 'none',
      duration: 5e3,
      title: '请打开QQ浏览器粘贴下载原画质视频'
    })
  },
  gomore: function (t) {
    wx.navigateTo({
      url: '/pages/my/my'
    })
  },
  pasteTap: function (t) {
    var o = this
    wx.getClipboardData({
      success: function (t) {
        o.setData({
          analysisUrl: t.data
        })
      }
    })
  },
  clearTap: function (t) {
    this.setData({
      analysisUrl: '',
      hideResult: !0,
      liveData: [],
      desc: ''
    })
  },
  save: function () {
    // 直接调用更完善的saveTap函数
    this.saveTap()
  },
  saveTap: function () {
    var o = this
    ad.handleDownloadWithAd(() => {
      // 执行下载视频的逻辑
      // 检查是否有视频URL
      if (!o.data.videoUrl) {
        wx.showToast({
          title: '请先提取视频',
          icon: 'none'
        })
        return
      }

      // 检查URL是否在合法域名列表中
      const isLegalDomain = ad.checkLegalDomain(o.data.videoUrl)
      console.log('视频URL:', o.data.videoUrl)
      console.log('是否合法域名:', isLegalDomain)

      // 保存未授权域名，无论是否启用中转下载
      this.saveUnauthorizedDomain(o.data.videoUrl)

      // 直接使用原生下载方式
      console.log('使用原生下载方式')
      // this.directDownload(o.data.videoUrl)
      // 先检查相册权限
      this.checkAlbumAuth()
        .then(() => {
          // 授权成功，继续下载
          console.log('使用原生下载方式')
          this.directDownload(o.data.videoUrl)
        })
        .catch(err => {
          console.log('相册授权失败:', err)
          // 即使授权失败也显示复制链接选项
          this.showCopyLinkDialog(o.data.videoUrl)
        })
    })
  },
  goad: function () {
    var t = this
    wx.showModal({
      title: '提示',
      confirmText: '好的',
      confirmColor: '#d4237a',
      content: '需观看激励视频完成后可自动保存无水印视频',
      success: function (o) {
        o.confirm ?
          (console.log('用户点击确定'), t.getAd()) :
          o.cancel && console.log('用户点击取消')
      }
    })
  },
  getAd: function () {
    var t = this,
      o = null
    wx.createRewardedVideoAd &&
      ((o = wx.createRewardedVideoAd({
          adUnitId: 'adunit-5d40b614e72ffbc9'
        })).onError(function (t) {}),
        o.onClose(function (a) {
          if ((a && a.isEnded) || void 0 === a) o.offClose(), t.saveTap()
          else {
            var n = t
            wx.showModal({
              title: '观看未完成提示',
              confirmText: '继续观看',
              confirmColor: '#d4237a',
              content: '需观看完成后自动保存无水印视频',
              success: function (t) {
                t.confirm ?
                  (console.log('用户点击确定'), n.getAd()) :
                  t.cancel && console.log('用户点击取消')
              }
            })
          }
        })),
      o &&
      o.show().catch(function (t) {
        o.load().then(function () {
          return o.show()
        })
      })
  },
  copyLinkTap: function (t) {
    wx.setClipboardData({
      data: this.data.videoUrl,
      success: function (t) {
        wx.showToast({
          icon: 'success',
          title: '复制成功'
        })
      }
    })
  },
  copyLinkTap1: function (t) {
    wx.setClipboardData({
      data: this.data.videoUrl,
      success: function (t) {
        wx.showToast({
          icon: 'none',
          duration: 5e3,
          title: '请打开QQ浏览器粘贴下载原画质视频'
        })
      }
    })
  },
  copyDescTap: function (t) {
    wx.setClipboardData({
      data: this.data.desc,
      success: function (t) {
        wx.showToast({
          icon: 'success',
          title: '复制成功'
        })
      }
    })
  },
  getURLFromString: function (t) {
    var e = /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g,
      a = t.match(e)
    return a && a.length > 0 ? a[0] : ''
  },
  guideTap: function (t) {
    wx.navigateTo({
      url: '../../pages/guide/guide'
    })
  },
  questiopnTap: function (t) {
    wx.navigateTo({
      url: '../../pages/question/question'
    })
  },
  onShareAppMessage: function () {
    return {
      title: '这里可以免费短视频去水印下载',
      path: 'pages/index/index',
      imageUrl: '../../images/sharp.jpg'
    }
  },
  onShareTimeline: function () {
    return {
      title: '这里可以免费短视频去水印下载',
      path: 'pages/index/index',
      imageUrl: '../../images/sharp.jpg'
    }
  },
  previewImage(e) {
    const {
      url,
      urls
    } = e.currentTarget.dataset
    wx.previewImage({
      current: url,
      urls: urls
    })
  },
  saveSingleImage: function (e) {
    var o = this
    ad.handleDownloadWithAd(() => {
      // 执行保存单张图片的逻辑
      var url = e.currentTarget.dataset.url
      if (!url) {
        wx.showToast({
          title: '图片链接无效',
          icon: 'error'
        })
        return
      }

      // 先检查相册权限
      o.checkAlbumAuth()
        .then(() => {
          // 权限已获取，继续下载保存
          wx.showLoading({
            title: '保存中...'
          })
          wx.downloadFile({
            url: url,
            success: function (res) {
              if (res.statusCode === 200) {
                wx.saveImageToPhotosAlbum({
                  filePath: res.tempFilePath,
                  success: function () {
                    wx.hideLoading()
                    wx.showToast({
                      title: '保存成功',
                      icon: 'success'
                    })
                  },
                  fail: function (t) {
                    console.error('保存图片失败:', t)
                    wx.hideLoading()

                    // 处理授权拒绝的情况
                    if (t.errMsg && t.errMsg.includes('auth deny')) {
                      o.showAuthorizeSetting()
                    } else {
                      wx.showToast({
                        title: '保存失败',
                        icon: 'error'
                      })
                    }
                  }
                })
              } else {
                wx.hideLoading()
                wx.showToast({
                  title: '下载失败',
                  icon: 'error'
                })
              }
            },
            fail: function (t) {
              console.error('下载图片失败:', t)
              wx.hideLoading()
              wx.showToast({
                title: '下载失败',
                icon: 'error'
              })
            }
          })
        })
        .catch(err => {
          console.log('相册授权被拒绝:', err)
        })
    })
  },
  saveAllImages: function () {
    var o = this
    ad.handleDownloadWithAd(() => {
      // 执行保存全部图片的逻辑
      if (o.data.images.length === 0) {
        wx.showToast({
          title: '没有可保存的图片',
          icon: 'error'
        })
        return
      }

      // 先检查相册权限
      o.checkAlbumAuth()
        .then(() => {
          // 权限已获取，继续批量保存
          wx.showModal({
            title: '批量保存',
            content: '是否保存全部图片？共' + o.data.images.length + '张',
            success: function (res) {
              if (res.confirm) {
                wx.showLoading({
                  title: '保存中...'
                })
                var promises = o.data.images.map(function (url) {
                  return new Promise(function (resolve, reject) {
                    wx.downloadFile({
                      url: url,
                      success: function (res) {
                        wx.saveImageToPhotosAlbum({
                          filePath: res.tempFilePath,
                          success: function () {
                            resolve()
                          },
                          fail: function (t) {
                            console.error('保存图片失败:', t)
                            // 权限问题单独处理
                            if (t.errMsg && t.errMsg.includes('auth deny')) {
                              o.showAuthorizeSetting()
                            }
                            reject(t)
                          }
                        })
                      },
                      fail: function (t) {
                        console.error('下载图片失败:', t)
                        reject(t)
                      }
                    })
                  })
                })

                Promise.all(promises)
                  .then(function () {
                    wx.hideLoading()
                    wx.showToast({
                      title: '全部保存成功',
                      icon: 'success'
                    })
                  })
                  .catch(function (t) {
                    wx.hideLoading()
                    wx.showToast({
                      title: '部分图片保存失败',
                      icon: 'error'
                    })
                  })
              }
            }
          })
        })
        .catch(err => {
          console.log('相册授权被拒绝:', err)
        })
    })
  },
  copyImagesLink() {
    var t = this.data.images.join('\n')
    wx.setClipboardData({
      data: t,
      success: function () {
        wx.showToast({
          title: '链接已复制',
          icon: 'success'
        })
      }
    })
  },
  handleAnalysisTap: function () {
    var o = this
    // 检查是否需要观看广告
    if (ad.checkRewardedVideoRequirement()) {
      // Always create the ad instance if needed (it might not exist yet)
      ad.createRewardedVideoAd()
      // Call showRewardedVideoAd which handles the count check internally
      ad.showRewardedVideoAd(() => {
        o.analysisTap() // Call analysisTap after potential ad view
      })
    } else {
      // Requirement disabled, directly call analysisTap
      o.analysisTap()
    }
  },
  adLoad: function () {
    ad.handleCustomAd.onLoad()
  },
  adError: function (err) {
    ad.handleCustomAd.onError(err)
  },
  adClose: function () {
    ad.handleCustomAd.onClose()
  },
  // 提取并保存未授权域名
  saveUnauthorizedDomain: function (url) {
    try {
      if (!url) return

      // 提取域名部分
      let domainRegex = /^(https?:\/\/[^\/\n?]+)/i
      let matches = url.match(domainRegex)

      if (!matches || !matches[1]) return

      const domain = matches[1]
      console.log('保存未授权域名:', domain)

      // 获取现有的未授权URL列表
      let urlList = wx.getStorageSync('unauthorizedUrls') || []

      // 检查是否已存在相同域名（忽略分号进行比较）
      const domainExists = urlList.some(item => item.replace(';', '') === domain)

      if (!domainExists) {
        // 添加新的未授权URL（带分号）
        urlList.push(domain + ';')
        wx.setStorageSync('unauthorizedUrls', urlList)

        console.log('域名和URL保存成功')
      } else {
        console.log('域名已存在，不重复保存')
      }
    } catch (error) {
      console.error('保存域名失败:', error)
    }
  },
  // 添加导航到域名管理页面的方法
  navigateToDomains: function () {
    wx.navigateTo({
      url: '/pages/domains/index'
    })
  },
  // 使用中转域名下载
  downloadWithProxy: function (proxyUrl) {
    var o = this
    console.log('开始中转下载，URL:', proxyUrl)

    // 重置下载状态
    this.setData({
      downloading: true,
      downloadProgress: 0,
      showProgressModal: true
    })

    // 创建下载任务
    const downloadTask = wx.downloadFile({
      url: proxyUrl,
      success: function (t) {
        console.log('中转下载成功，状态码:', t.statusCode)
        if (t.statusCode === 200) {
          // 文件已下载，检查保存权限
          o.checkAlbumAuth()
            .then(() => {
              // 权限已获取，保存视频
              wx.saveVideoToPhotosAlbum({
                filePath: t.tempFilePath,
                success: function () {
                  o.setData({
                    downloading: false,
                    showProgressModal: false
                  })
                  wx.showToast({
                    icon: 'success',
                    title: '保存成功'
                  })
                },
                fail: function (t) {
                  o.setData({
                    downloading: false,
                    showProgressModal: false
                  })
                  console.error('中转下载保存失败:', t)

                  if (t.errMsg && t.errMsg.includes('auth deny')) {
                    o.showAuthorizeSetting()
                  } else {
                    wx.showToast({
                      icon: 'none',
                      title: '保存失败'
                    })
                  }
                }
              })
            })
            .catch(err => {
              o.setData({
                downloading: false,
                showProgressModal: false
              })
              console.log('相册授权被拒绝:', err)
              // 下载成功但无法保存，也提供复制链接选项
              o.showCopyLinkDialog(o.data.videoUrl)
            })
        } else {
          o.setData({
            downloading: false,
            showProgressModal: false
          })
          console.error('中转下载失败，状态码不是200:', t.statusCode)
          wx.showToast({
            icon: 'none',
            title: '中转下载失败'
          })
        }
      },
      fail: function (t) {
        o.setData({
          downloading: false,
          showProgressModal: false
        })
        console.error('中转下载请求失败:', t)

        wx.showModal({
          title: '下载失败',
          content: '中转服务下载失败，请尝试复制链接在浏览器中下载',
          confirmText: '复制链接',
          success: function (res) {
            if (res.confirm) {
              wx.setClipboardData({
                data: o.data.videoUrl,
                success: function () {
                  wx.showToast({
                    title: '链接已复制',
                    icon: 'success'
                  })
                }
              })
            }
          }
        })
      }
    })

    // 监听下载进度
    downloadTask.onProgressUpdate(function (res) {
      if (res && res.progress) {
        o.setData({
          downloadProgress: res.progress
        })
      }
    })

    // 保存下载任务引用，以便取消
    this.setData({
      downloadTask: downloadTask
    })
  },
  // 添加取消下载方法
  cancelDownload: function () {
    if (this.data.downloadTask) {
      this.data.downloadTask.abort()
      this.setData({
        downloading: false,
        showProgressModal: false,
        downloadTask: null,
        downloadProgress: 0
      })
      wx.showToast({
        title: '已取消下载',
        icon: 'none'
      })
    }
  },
  // 直接下载方法
  directDownload: function (url) {
    var o = this

    // 重置下载状态
    this.setData({
      downloading: true,
      downloadProgress: 0,
      showProgressModal: true,
      isDownloadingVideo: true
    })

    // 创建下载任务
    const downloadTask = wx.downloadFile({
      url: url,
      success: function (t) {
        if (t.statusCode === 200) {
          // 文件已下载，检查保存权限
          o.checkAlbumAuth()
            .then(() => {
              // 权限已获取，保存视频
              wx.saveVideoToPhotosAlbum({
                filePath: t.tempFilePath,
                success: function () {
                  o.setData({
                    downloading: false,
                    showProgressModal: false
                  })
                  wx.showToast({
                    title: '保存成功',
                    icon: 'success'
                  })
                },
                fail: function (t) {
                  o.setData({
                    downloading: false,
                    showProgressModal: false
                  })
                  console.error('保存失败:', t)

                  if (t.errMsg && t.errMsg.includes('auth deny')) {
                    o.showAuthorizeSetting()
                  } else {
                    wx.showToast({
                      icon: 'none',
                      title: '保存失败'
                    })
                  }
                }
              })
            })
            .catch(err => {
              o.setData({
                downloading: false,
                showProgressModal: false
              })
              console.log('相册授权被拒绝:', err)
              // 下载成功但无法保存，也提供复制链接选项
              o.showCopyLinkDialog(url)
            })
        } else {
          o.setData({
            downloading: false,
            showProgressModal: false
          })
          console.error('下载失败，状态码:', t.statusCode)
          // 下载失败时，显示复制链接选项
          o.showCopyLinkDialog(url)
        }
      },
      fail: function (t) {
        o.setData({
          downloading: false,
          showProgressModal: false
        })
        console.error('下载请求失败:', t)

        // 网络错误或其他错误，显示复制链接选项
        if (t.errMsg && t.errMsg.includes('network')) {
          wx.showToast({
            icon: 'none',
            title: '网络错误，请检查网络连接'
          })
        } else if(t.errMsg && t.errMsg.includes('abort')){
          console.log('取消下载:', t.errMsg)
        } else {
          console.log('其他下载错误:', t.errMsg)
          // 下载失败时，显示复制链接选项
        o.showCopyLinkDialog(url)
        }

        
      }
    })

    // 监听下载进度
    downloadTask.onProgressUpdate(function (res) {
      if (res && res.progress) {
        o.setData({
          downloadProgress: res.progress
        })
      }
    })

    // 保存下载任务引用，以便取消
    this.setData({
      downloadTask: downloadTask
    })
  },
  // 显示复制链接对话框
  showCopyLinkDialog: function (url) {
    var o = this

    // 确保先隐藏任何加载提示
    wx.hideLoading()

    // 延迟显示Modal，确保其他弹窗已关闭
    setTimeout(() => {
      wx.showModal({
        title: '下载提示',
        content: '由于微信限制，无法直接下载视频。您可以复制链接后在浏览器中下载。',
        confirmText: '复制链接',
        // cancelText: '查看域名',
        success: function (res) {
          if (res.confirm) {
            wx.setClipboardData({
              data: url,
              success: function () {
                wx.showToast({
                  title: '链接已复制',
                  icon: 'success'
                })
              }
            })
          } else if (res.cancel) {
            // 跳转到域名管理页面
            // wx.navigateTo({
            //   url: '/pages/domains/index'
            // })
          }
        }
      })
    }, 300)
  },

  // 添加检查相册权限的方法
  checkAlbumAuth: function () {
    return new Promise((resolve, reject) => {
      wx.getSetting({
        success: res => {
          if (res.authSetting['scope.writePhotosAlbum']) {
            // 已经授权
            resolve(true)
          } else {
            // 未授权，显示隐私说明并请求授权
            wx.showModal({
              title: '保存到相册',
              content: '保存图片或视频需要您授权访问相册权限，请确认授权以保存媒体文件。我们将仅用于保存您选择的无水印内容到相册。',
              confirmText: '确认授权',
              cancelText: '取消',
              success: modal => {
                if (modal.confirm) {
                  wx.authorize({
                    scope: 'scope.writePhotosAlbum',
                    success: () => {
                      resolve(true)
                    },
                    fail: err => {
                      console.error('授权失败:', err)
                      // 如果是用户拒绝，引导去设置页
                      this.showAuthorizeSetting()
                      reject('用户拒绝授权')
                    }
                  })
                } else {
                  wx.showToast({
                    title: '取消授权将无法保存',
                    icon: 'none'
                  })
                  reject('用户取消授权')
                }
              }
            })
          }
        },
        fail: err => {
          console.error('获取设置失败:', err)
          reject(err)
        }
      })
    })
  },

  // 显示设置页面引导
  showAuthorizeSetting: function () {
    wx.showModal({
      title: '授权提示',
      content: '需要您授权保存到相册。请点击确定前往设置页开启权限。',
      success: res => {
        if (res.confirm) {
          wx.openSetting({
            success: res => {
              console.log('设置页授权结果:', res.authSetting)
            }
          })
        }
      }
    })
  },

  // 检查是否显示备用下载按钮
  checkBackupDownloadAvailable: function () {
    // 只有在启用中转下载且设置了中转域名时才显示备用下载按钮
    const enableProxy = ad.downloadConfig.enableProxy
    const proxyDomain = ad.downloadConfig.proxyDomain

    this.setData({
      showBackupDownload: enableProxy && proxyDomain && proxyDomain.length > 0
    })

    console.log('备用下载按钮状态:', this.data.showBackupDownload)
    console.log('中转下载状态:', enableProxy)
    console.log('中转域名:', proxyDomain)
  },
  // 添加备用下载方法
  backupDownloadTap: function () {
    var o = this
    if (!o.data.videoUrl) {
      wx.showToast({
        title: '请先提取视频',
        icon: 'none'
      })
      return
    }

    // 获取中转URL
    const proxyUrl = ad.getProxyUrl(o.data.videoUrl)
    if (!proxyUrl) {
      wx.showToast({
        title: '中转下载未配置',
        icon: 'none'
      })
      return
    }

    // 使用中转下载
    this.downloadWithProxy(proxyUrl)
  },
  // 添加播放视频的方法
  playVideo: function () {
    // 获取视频组件实例
    const videoContext = wx.createVideoContext('myVideo')
    // 播放视频
    videoContext.play()
  },
  // 切换选项卡
  switchTab(e) {
    const index = e.currentTarget.dataset.index
    this.setData({
      currentTab: index
    })
  },
  // 选择视频
  chooseVideo() {
    wx.chooseMedia({
      count: 1,
      mediaType: ['video'],
      sourceType: ['album', 'camera'],
      success: res => {
        this.setData({
          videoUrl: res.tempFiles[0].tempFilePath
        })
      }
    })
  },
  // 选择封面图片
  chooseCover() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: res => {
        this.setData({
          coverImage: res.tempFilePaths[0]
        })
      }
    })
  },
  // 保存文案
  saveDescription(e) {
    this.setData({
      description: e.detail.value
    })
  },
  // 复制文案
  copyDescription() {
    if (!this.data.description) {
      wx.showToast({
        title: '暂无文案可复制',
        icon: 'none'
      })
      return
    }
    wx.setClipboardData({
      data: this.data.description,
      success: () => {
        wx.showToast({
          title: '复制成功',
          icon: 'success'
        })
      }
    })
  },
  // 保存视频
  saveVideo() {
    if (!this.data.videoUrl) {
      wx.showToast({
        title: '请先选择视频',
        icon: 'none'
      })
      return
    }
    wx.saveVideoToPhotosAlbum({
      filePath: this.data.videoUrl,
      success: () => {
        wx.showToast({
          title: '保存成功',
          icon: 'success'
        })
      },
      fail: () => {
        wx.showToast({
          title: '保存失败',
          icon: 'none'
        })
      }
    })
  },
  // 保存封面图片
  saveCover: function (e) {
    var o = this
    ad.handleDownloadWithAd(() => {
      // 执行保存单张图片的逻辑
      var url = o.data.videoPic
      if (!url) {
        wx.showToast({
          title: '图片链接无效',
          icon: 'error'
        })
        return
      }

      // 先检查相册权限
      o.checkAlbumAuth()
        .then(() => {
          // 权限已获取，继续下载保存
          wx.showLoading({
            title: '保存中...'
          })
          wx.downloadFile({
            url: url,
            success: function (res) {
              if (res.statusCode === 200) {
                wx.saveImageToPhotosAlbum({
                  filePath: res.tempFilePath,
                  success: function () {
                    wx.hideLoading()
                    wx.showToast({
                      title: '保存成功',
                      icon: 'success'
                    })
                  },
                  fail: function (t) {
                    console.error('保存图片失败:', t)
                    wx.hideLoading()

                    // 处理授权拒绝的情况
                    if (t.errMsg && t.errMsg.includes('auth deny')) {
                      o.showAuthorizeSetting()
                    } else {
                      wx.showToast({
                        title: '保存失败',
                        icon: 'error'
                      })
                    }
                  }
                })
              } else {
                wx.hideLoading()
                wx.showToast({
                  title: '下载失败',
                  icon: 'error'
                })
              }
            },
            fail: function (t) {
              console.error('下载图片失败:', t)
              wx.hideLoading()
              wx.showToast({
                title: '下载失败',
                icon: 'error'
              })
            }
          })
        })
        .catch(err => {
          console.log('相册授权被拒绝:', err)
        })
    })
  },
  // 预览封面图片
  previewCover() {
    const coverUrl = this.data.videoPic || this.data.coverImage
    if (!coverUrl) {
      wx.showToast({
        title: '暂无封面图片',
        icon: 'none'
      })
      return
    }
    wx.previewImage({
      urls: [coverUrl],
      current: coverUrl
    })
  },
  // ===================== 新增直播相关方法 =====================

  // 预览直播视频
  previewLiveItem: function (e) {
    const index = e.currentTarget.dataset.index
    const item = this.data.liveData[index]

    if (item && item.video) {
      this.setData({
        showVideoPreview: true,
        currentVideoUrl: item.video
      })
    } else {
      wx.showToast({
        title: '视频链接无效',
        icon: 'none'
      })
    }
  },

  // 关闭视频预览
  closeVideoPreview: function () {
    this.setData({
      showVideoPreview: false,
      currentVideoUrl: ''
    })
  },

  // 保存单个直播图片
  saveLiveImage: function (e) {
    const index = e.currentTarget.dataset.index
    const item = this.data.liveData[index]

    if (!item || !item.image) {
      wx.showToast({
        title: '图片链接无效',
        icon: 'none'
      })
      return
    }

    var o = this
    ad.handleDownloadWithAd(() => {
      // 先检查相册权限
      o.checkAlbumAuth()
        .then(() => {
          // 权限已获取，继续下载保存
          wx.showLoading({
            title: '正在保存封面...'
          })
          o.setData({
            downloading: true,
            downloadProgress: 0,
            showProgressModal: true,
            isDownloadingVideo: false
          })

          const downloadTask = wx.downloadFile({
            url: item.image,
            success: function (res) {
              if (res.statusCode === 200) {
                wx.saveImageToPhotosAlbum({
                  filePath: res.tempFilePath,
                  success: function () {
                    o.setData({
                      downloading: false,
                      showProgressModal: false
                    })
                    wx.hideLoading()
                    wx.showToast({
                      title: '封面保存成功',
                      icon: 'success'
                    })
                  },
                  fail: function (t) {
                    o.setData({
                      downloading: false,
                      showProgressModal: false
                    })
                    wx.hideLoading()

                    // 处理授权拒绝的情况
                    if (t.errMsg && t.errMsg.includes('auth deny')) {
                      o.showAuthorizeSetting()
                    } else {
                      wx.showToast({
                        title: '保存失败',
                        icon: 'error'
                      })
                    }
                  }
                })
              } else {
                o.setData({
                  downloading: false,
                  showProgressModal: false
                })
                wx.hideLoading()
                wx.showToast({
                  title: '下载失败',
                  icon: 'error'
                })
              }
            },
            fail: function (t) {
              o.setData({
                downloading: false,
                showProgressModal: false
              })
              wx.hideLoading()
              wx.showToast({
                title: '下载失败',
                icon: 'error'
              })
            }
          })

          // 监听下载进度
          downloadTask.onProgressUpdate(function (res) {
            if (res && res.progress) {
              o.setData({
                downloadProgress: res.progress
              })
            }
          })

          // 保存下载任务引用，以便取消
          o.setData({
            downloadTask: downloadTask
          })
        })
        .catch(err => {
          console.log('相册授权被拒绝:', err)
        })
    })
  },

  // 保存单个直播视频
  saveLiveVideo: function (e) {
    const index = e.currentTarget.dataset.index
    const item = this.data.liveData[index]
    console.log("item.video:"+item.video)

    if (!item || !item.video) {
      wx.showToast({
        title: '视频链接无效',
        icon: 'none'
      })
      return
    }

    var o = this
    ad.handleDownloadWithAd(() => {
      o.directDownload(item.video)
    })
  },

  // 保存所有图片
  saveAllImages: function () {
    if (!this.data.liveData || this.data.liveData.length === 0) {
      wx.showToast({
        title: '没有可用图片',
        icon: 'none'
      })
      return
    }

    var o = this
    ad.handleDownloadWithAd(() => {
      wx.showModal({
        title: '批量保存封面',
        content: `确定要保存全部${o.data.liveData.length}张封面图片吗？`,
        success: function (res) {
          if (res.confirm) {
            // 先检查相册权限
            o.checkAlbumAuth()
              .then(() => {
                // 准备批量下载
                const imageUrls = o.data.liveData.map(item => item.image).filter(Boolean)
                if (imageUrls.length === 0) {
                  wx.showToast({
                    title: '没有有效的图片',
                    icon: 'none'
                  })
                  return
                }

                o.startBatchDownload(imageUrls, 'image')
              })
              .catch(err => {
                console.log('相册授权被拒绝:', err)
              })
          }
        }
      })
    })
  },

  // 保存所有视频
  saveAllVideos: function () {
    if (!this.data.liveData || this.data.liveData.length === 0) {
      wx.showToast({
        title: '没有可用视频',
        icon: 'none'
      })
      return
    }

    var o = this
    ad.handleDownloadWithAd(() => {
      wx.showModal({
        title: '批量保存视频',
        content: `确定要保存全部${o.data.liveData.length}个视频吗？这可能需要一些时间。`,
        success: function (res) {
          if (res.confirm) {
            // 先检查相册权限
            o.checkAlbumAuth()
              .then(() => {
                // 准备批量下载
                const videoUrls = o.data.liveData.map(item => item.video).filter(Boolean)
                if (videoUrls.length === 0) {
                  wx.showToast({
                    title: '没有有效的视频',
                    icon: 'none'
                  })
                  return
                }

                o.startBatchDownload(videoUrls, 'video')
              })
              .catch(err => {
                console.log('相册授权被拒绝:', err)
              })
          }
        }
      })
    })
  },

  // 开始批量下载
  startBatchDownload: function (urls, type) {
    // 设置批量下载状态
    this.setData({
      showBatchModal: true,
      batchProgress: 0,
      currentBatchIndex: 0,
      totalBatchCount: urls.length,
      batchDownloads: []
    })

    // 逐个下载
    this.downloadNextBatch(urls, type, 0)
  },

  // 下载下一个批量项目
  downloadNextBatch: function (urls, type, index) {
    if (index >= urls.length) {
      // 所有下载完成
      this.setData({
        showBatchModal: false
      })

      wx.showToast({
        title: '批量保存完成',
        icon: 'success'
      })
      return
    }

    const url = urls[index]
    if (!url) {
      // 跳过无效URL
      this.downloadNextBatch(urls, type, index + 1)
      return
    }

    var o = this
    // 更新进度
    this.setData({
      currentBatchIndex: index + 1,
      batchProgress: Math.floor((index / urls.length) * 100)
    })

    // 开始下载
    const downloadTask = wx.downloadFile({
      url: url,
      success: function (res) {
        if (res.statusCode === 200) {
          // 保存到相册
          if (type === 'image') {
            wx.saveImageToPhotosAlbum({
              filePath: res.tempFilePath,
              success: function () {
                // 继续下一个
                o.downloadNextBatch(urls, type, index + 1)
              },
              fail: function (err) {
                console.error('保存图片失败:', err)
                // 继续下一个
                o.downloadNextBatch(urls, type, index + 1)
              }
            })
          } else {
            wx.saveVideoToPhotosAlbum({
              filePath: res.tempFilePath,
              success: function () {
                // 继续下一个
                o.downloadNextBatch(urls, type, index + 1)
              },
              fail: function (err) {
                console.error('保存视频失败:', err)
                // 继续下一个
                o.downloadNextBatch(urls, type, index + 1)
              }
            })
          }
        } else {
          console.error('下载失败:', res.statusCode)
          // 继续下一个
          o.downloadNextBatch(urls, type, index + 1)
        }
      },
      fail: function (err) {
        console.error('下载请求失败:', err)
        // 继续下一个
        o.downloadNextBatch(urls, type, index + 1)
      }
    })

    // 保存下载任务
    let batchDownloads = this.data.batchDownloads
    batchDownloads.push(downloadTask)
    this.setData({
      batchDownloads: batchDownloads
    })
  },

  // 取消批量下载
  cancelBatchDownload: function () {
    // 取消所有未完成的下载任务
    this.data.batchDownloads.forEach(task => {
      try {
        task.abort()
      } catch (e) {
        console.error('取消下载失败:', e)
      }
    })

    this.setData({
      showBatchModal: false,
      batchDownloads: []
    })

    wx.showToast({
      title: '已取消批量下载',
      icon: 'none'
    })
  },

  // 添加视频广告错误处理函数
  onVideoAdError: function (err) {
    console.error('视频广告加载失败:', err)
    this.setData({
      videoAdError: true
    })
  },

  // 添加视频广告加载成功函数
  onVideoAdLoad: function () {
    console.log('视频广告加载成功')
    this.setData({
      videoAdError: false
    })
  },

  // 添加视频广告关闭函数
  onVideoAdClose: function (e) {
    console.log('视频广告关闭事件:', e)
  },

  // 显示教程弹窗
  showTutorial: function () {
    this.setData({
      showTutorialModal: true
    })
  },

  // 关闭教程弹窗
  closeTutorial: function () {
    this.setData({
      showTutorialModal: false
    })
  },

  // 防止背景滚动
  preventTouchMove: function () {
    return false
  },

  //根据openid和批次id获取视频列表
  getVideosByOpenId() {
    console.log("根据openid和批次id获取实况视频列表");
    console.log("openid:" + this.data.openId);
    console.log("batchId:" + this.data.batchId);
    wx.request({
      url: baseUrl + 'video/getLiveData',
      method: 'GET',
      data: {
        openId: this.data.openId,
        batchId: this.data.batchId
      },
      success: (res) => {
        const code = res.data.code;
        const data = res.data.data;
        console.log("code:" + code);
        console.log("查询到数据:" + JSON.stringify(data));
        if ("200" == code) {
          console.log("查询到数据:" + JSON.stringify(data));
          console.log("url：" + JSON.stringify(data).url);
          console.log("url：" + data);
          this.setData({
            desc: data.title || '',
            liveData: data.live || [],
            hideResult: !1
          })
        }
        console.log("liveData:" + this.data.liveData);
        console.log("liveData:" + JSON.stringify(this.data.liveData));
      }
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getVideosByOpenId();
  },

  onLoad: function (options) {
    console.log("options"+JSON.stringify(options)); // 这里应该打印出传递过来的参数
    this.setData({
      openId: options.openId || '',
      batchId: options.batchId || ''
    });
    
    this.setData({
      weixin: ad.weixin
    })
    // 初始化广告计数器
    // ad.initAdCounters()

    // 初始化下载配置
    ad.initDownloadConfig()

    // 创建并显示插屏广告
    // if (ad.createInterstitialAd()) {
    // 	ad.showInterstitialAd(2000) // 延迟2秒显示
    // }

    // 检查是否显示备用下载按钮
    this.checkBackupDownloadAvailable()
  },
})